/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package br.ufg.inf.pos.bd;

import br.ufg.inf.pos.br.utils.RegraDaoException;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

/**
 *
 * @author luan
 */
public class PatrimonioServiceImpl implements PatrimonioService {

    PatrimonioDao patrimonioDao;

    public PatrimonioServiceImpl() {
        patrimonioDao = new PatrimonioDaoImpl();
    }

    @Override
    public boolean cadastrarPatrimonio(Patrimonio patrimonio) throws RegraNegocioException{
           verificaIntegridade(patrimonio);
            return patrimonioDao.save(patrimonio);
   }

    /*
    Este método valida os dados de entrada do patrimonio
    */
    private void verificaIntegridade(Patrimonio patrimonio) {
       if(patrimonio.getDataCompra() == null){
            throw new RegraNegocioException("Favor inforar a DATA DA COMPRA");
       }else if(patrimonio.getFuncionario() == null){
            throw new RegraNegocioException("Não foi possível obter o funcionário");
       }else if(patrimonio.getLocalizacao().getNomeLocalizacao() == null || 
               patrimonio.getLocalizacao().getNomeLocalizacao().equalsIgnoreCase("")){
            throw new RegraNegocioException("Favor inforar a LOCALIZAÇÃO do patrimonio");
       }else if(patrimonio.getNumNF() == 0 ){
            throw new RegraNegocioException("Favor inforar a NOTA FISCAL do patrimonio");
       }else if(patrimonio.getProduto().getNome() == null || 
               patrimonio.getProduto().getNome().equalsIgnoreCase("") ){
            throw new RegraNegocioException("Favor inforar o NOME do produto");
       }else if(patrimonio.getStatus().getTipoStatus() == null){
            throw new RegraNegocioException("Favor inforar o STATUS do produto");
       }else if(patrimonio.getStatus().getDataCadastro() == null){
            throw new RegraNegocioException("Favor inforar a DATA DE REMANEJAMENTO do patrimonio");
       }else if(patrimonio.getValor() == 0){
            throw new RegraNegocioException("Favor inforar o VALOR do produto");
       }
        
    }
    
    /* Este método converte uma data String em data Date
     Quem utilizar esse método deve tratar a excessão ParseException
     */
public Calendar converterStringToData(String dataString) throws ParseException {
        Date data;
        data = new SimpleDateFormat("dd/MM/yyyy").parse(dataString);
        Calendar calendario = Calendar.getInstance();
        calendario.setTime(data);
        return calendario;
    }

}
